浅谈目前主流NoSql数据库 您所在的位置:网站首页 数据库 nosql 浅谈目前主流NoSql数据库

浅谈目前主流NoSql数据库

2023-03-29 23:07| 来源: 网络整理| 查看: 265

浅谈目前主流NoSql数据库

前言

无意翻资料发现目前好多noSql数据库,但是工作中貌似并没有接触到,很好奇他们的区别,所以就有了这篇文章。(整合了网上许多大佬的文章,如有侵权,麻烦私信告知。)采用浅谈也是为了方便大家无压力阅读,快速了解知识。

如果有文章问题的地方麻烦评论做补充。感谢。

目前我了解的主流Nosql如下: redis mongoDB memcache LevelDB Cassandra HBase

下面我们将通过比较简单图表方式,尽量全面了解这些数据库特点和优缺点以及我所了解的应用场景

下面将通过简介,特性,应用场景,和综合的读写性能复杂检索方面来阐述

简介 redismongoDBmemcacheLevelDBCassandraHBaseRedis是一个开源的(BSD许可的)内存数据结构存储,用作数据库、缓存和消息代理。Redis提供数据结构,如字符串,哈希,列表,集,排序集,范围查询,位图,超日志,地理空间索引和流。Redis有内置的复制,Lua脚本,LRU驱逐,事务,和不同级别的磁盘上的持久性,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性。MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题。leveldb 是一个持久化的 key/value 存储,key 和 value 都是任意的字节数组(byte arrays),并且在存储时,key 值根据用户指定的 comparator 函数进行排序 。LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM(Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,关于LSM,本文在后面也会简单提及。Cassandra是一套开源分布式NoSQL数据库系统。是一个混合型的非关系的数据库。是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。HBase是一个分布式的、面向列的开源数据库,HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群 特性 特点 redismongoDBmemcacheLevelDBCassandraHBase所用语言C/C++,运行异常快,有硬盘存储支持的内存数据库,支持事务,虽然采用简单数据或以键值索引的哈希表,但也支持复杂的作比如:ANGEBYSCORE所用语言C++,保留了SQL一些友好的特性(查询,索引),在数据存储时采用内存到文件映射,对性能的关注超过对功能的要求,采用 GridFS存储大数据或元数据(不是真正的文件系统)高性能key-value分布缓存,多线程,主线程/工作线程,单节点百万级QPS,分布式解决共享内存只能单机应用的局限,同时有效阻止了磁盘开销和阻塞的发生开发语言是 C++,key和value都是任意的字节数组,支持内存和持久化存储,锁表范围过,同一时间只支持单进程(支持多线程)访问db不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,扩展比较简单,数据结构比较丰富,分发简单可以快速写入高可靠性、高性能、面向列、可伸缩的分布式存储系统,目的想用相对普通的配置就能处理大数据量 数据结构

因为数据结构真的很复杂,我这里只能简单总结一下,学识有限,可能总结的不是很到位,想真的了解 建议百度搜索对应的数据结构。

redismongoDBmemcacheLevelDBCassandraHBasekev-value,新版本支持String、Hash、List、SortedSet(zSet)、Set五种数据类型mongoDB存储数据类型为BSON(Binary JSON ),它将数据存储成一个文档,数据结构由键值(key=>value)对组成,支持很多数据类型(_stritem)结构体,memcached中存储数据的最小单位,是key-value的抽象,还记录了最近访问时间、消亡时间等重要信息。跳表和LSM-Tree,跳表是一个基于有序链表的数据结构,LSM-Tree(Log Structured-Merge Tree)是一个插入性能极佳的结构,传统的关系型数据库的数据库存储引擎(如mysql的Innodb)都是采用B+树的形式在 Cassandra 中,表是“嵌套的键值对”的列表。 (ROW x COLUMN 键 x COLUMN 值)这里真的没办法很简单的讲 具体可以 百度 cassandra数据结构RowKey,用来检索记录的主键,Column Family,列族:HBASE 表中的每个列,都归属于某个列族,相比普通table,rowkey概念比较重要 适用场景

这个肯定是大家最关注的地方之一

redismongoDBmemcacheLevelDBCassandraHBase业务对数据的读写要求频繁,数据规模不大,也不需要长期存储数据,可以选择redis,比如:会话缓存,全页缓存,不同订单临时缓存,redis锁,在业务中广泛使用业务的数据规模较大,对数据的读性能要求很高,数据表的结构需要经常变,有时还需要做一些聚合查询的业务场景可以使用mongdb,比如:游戏场景,物流,社交,物联网,移动应用内存对象缓存系统适用访问频率极高的业务,比如:电子商务,游戏,广告,大型促销业务,带计数器的库存系统,数据分析业务,同时因为memcache本身就基于分布式系统,所以很适合大型分布式系统LevelDB很适合应用在查询较少,而写很多的场景也是适合是写多读少场景,能够支持大并发低延时的访问需求,具备高可用和弹性扩容能力,比如:互联网类应用,写密集、统计和分析型工作,数据驱动的业务HBase的设计之初是为了满足互联网的大数据场景,几乎所有非强事务的结构化、半结构化的存储需求都可以使用HBase来满足,比如:大数据场景,广告场景,车联网,互联网,金融和零售业务 结尾

这篇文章纯心是让大家能见到快速的了解到 以后可能会接触到的nosql数据库,很多地方我也自知不够详细,不够深入。想深入了解的可以自行搜索资料。

作者的话

互相尊重,互相进步,很感谢大家的无私精神。才能让我们中国IT越来越进步!

也非常愿意虚心听取更多大佬的意见和建议,和大家一起交流进步。

我是 樊亦凡

一个每天进步一点点的程序猿

==您的点赞是我最好的鼓励!非常感谢!==



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有